#ifndef __ERRORLOG_H__
#define __ERRORLOG_H__
#include "allThread.h"
#include "RealtimeWaveform.h"

#define PAC_DATA_QTY (860)

struct errorTime
{
    int year;/*年(20xx年)*/
    int mon;/* 月(1~12) */
    int day;/* 日(1~28,29,30,31) */
    int hour;/* 时(0~23) */
    int min;/* 分(0~59) */
    int sec;/* 秒(0~59) */
    int ms;/* 毫秒(0~999) */
};

struct errorlogFileHead{
    uint32_t elfh_errorId;/* 错误ID */
    struct{
        struct commonData data1;
        struct commonData data2;
        struct commonData data3;
        struct commonData data4;
    }elfh_other;/* 其它信息 */
    struct errorTime elfh_time;
    uint32_t elfh_pacByteQty;/* pac数据所占用字节数 */
    struct{
        uint32_t waveGroupQty;/* 波形组数 */
        uint32_t fifoQty;/* fifo数 */
        uint32_t fifoDepth;/* fifo深度 */
        uint32_t errorWaveDataGroupIndex;/* 发生故障时所在波形组索引 */
        uint32_t channelId[WAVEFORM_FIFO_QTY];/* 各fifo中波形数据所归属的通道 */
    }elfh_waveInfor;
};

struct errorWaveData{
    struct oneGroupWaveData errorWaveData[MAX_ERROR_WAVE_GROUP];
};

struct errorLogData{
    struct errorlogFileHead errLogHead;
    struct errorWaveData errWaveData;
    uint16_t pacData[PAC_DATA_QTY];
};

struct errorlogFileHead* getErrorlogHeadBuff();

struct errorWaveData* getErrorWaveDataBuff();

uint16_t* getErrorLogPacDataBuff();

int errorLogBuffDataFromJson(const char* strErrorLog);

int errorMsgSend(int errorId);

void errorLogUpdate(int errorId);

void Errorlog_Thread(void* pPara);

#endif
